import "antd/es/tag/style";
import _Tag from "antd/es/tag";
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
import { withNativeProps } from "../utils/native-props";
import { DownOutlined, UpOutlined } from '@ant-design/icons';
import classNames from 'classnames';
import React, { useMemo, useReducer, useState } from 'react';
import "./index.less";
import { jsxs as _jsxs } from "react/jsx-runtime";
import { jsx as _jsx } from "react/jsx-runtime";
import { Fragment as _Fragment } from "react/jsx-runtime";
var CheckableTag = _Tag.CheckableTag;
var SearchCategory = function SearchCategory(props) {
  var _useReducer = useReducer(function (x) {
      return x + 1;
    }, 0),
    _useReducer2 = _slicedToArray(_useReducer, 2),
    _ = _useReducer2[0],
    forceUpdate = _useReducer2[1];
  var _props$list = props.list,
    list = _props$list === void 0 ? [] : _props$list,
    onClick = props.onClick,
    _props$multiple = props.multiple,
    multiple = _props$multiple === void 0 ? false : _props$multiple,
    _props$labelMinWidth = props.labelMinWidth,
    labelMinWidth = _props$labelMinWidth === void 0 ? 70 : _props$labelMinWidth,
    _props$tagBackground = props.tagBackground,
    tagBackground = _props$tagBackground === void 0 ? true : _props$tagBackground,
    maxNumber = props.maxNumber,
    maxItems = props.maxItems;
  var _list = useMemo(function () {
    return JSON.parse(JSON.stringify(list));
  }, [list]);
  var _useState = useState(false),
    _useState2 = _slicedToArray(_useState, 2),
    isExpend = _useState2[0],
    changeIsExpend = _useState2[1];
  return withNativeProps(props, /*#__PURE__*/_jsxs("div", {
    className: "pd-search-category",
    children: [_list.map(function (item, listIndex) {
      if (maxItems && !isExpend && listIndex >= maxItems) {
        return null;
      }
      return /*#__PURE__*/_jsxs("div", {
        className: "pd-search-category-item",
        children: [/*#__PURE__*/_jsxs("div", {
          className: "pd-search-category-item-name",
          style: {
            minWidth: labelMinWidth
          },
          children: [item.name, "\uFF1A"]
        }), /*#__PURE__*/_jsxs("div", {
          className: classNames('pd-search-category-item-values', {
            'tag-background': tagBackground
          }),
          children: [item.values.map(function (value, index) {
            return /*#__PURE__*/_jsx(CheckableTag, {
              checked: !!value.selected,
              onChange: function onChange(checked) {
                if (!multiple) {
                  if (value.selected) return;
                  item.values.forEach(function (v) {
                    v.selected = false;
                  });
                  value.selected = true;
                  forceUpdate();
                  if (onClick) {
                    onClick(value, item, _list);
                  }
                } else {
                  value.selected = checked;
                  forceUpdate();
                  if (onClick) {
                    onClick(value, item, _list);
                  }
                }
              },
              children: value.name
            }, index);
          }).slice(0, maxNumber && !item._expand ? maxNumber + 1 : item.values.length), maxNumber && item.values.length > maxNumber && /*#__PURE__*/_jsx("a", {
            onClick: function onClick() {
              item._expand = !item._expand;
              forceUpdate();
            },
            children: item._expand ? /*#__PURE__*/_jsxs(_Fragment, {
              children: ["\u6536\u8D77 ", /*#__PURE__*/_jsx(UpOutlined, {})]
            }) : /*#__PURE__*/_jsxs(_Fragment, {
              children: ["\u5C55\u5F00 ", /*#__PURE__*/_jsx(DownOutlined, {})]
            })
          })]
        })]
      }, listIndex);
    }), maxItems && list.length > maxItems && /*#__PURE__*/_jsx("a", {
      onClick: function onClick() {
        changeIsExpend(!isExpend);
      },
      className: "pd-search-category-show-more",
      children: isExpend ? /*#__PURE__*/_jsxs(_Fragment, {
        children: ["\u57FA\u672C\u7B5B\u9009 ", /*#__PURE__*/_jsx(UpOutlined, {})]
      }) : /*#__PURE__*/_jsxs(_Fragment, {
        children: ["\u66F4\u591A ", /*#__PURE__*/_jsx(DownOutlined, {})]
      })
    })]
  }));
};
SearchCategory.VALUE_ALL = {
  name: '全部',
  type: 'all',
  selected: true
};
export default SearchCategory;